package com.chengqs.rapid.common.concurrent.queue.flusher;

/**
 * <B>主类名称：</B>Flusher<BR>
 * <B>概要说明：</B>Flusher接口定义<BR>
 *
 * @author: chengqs
 * @create: 2025-03-12 15:08:04
 **/
public interface Flusher<E> {
    /**
     * <B>方法名称：</B>add<BR>
     * <B>概要说明：</B>添加元素方法<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     * @param event
     */
    void add(E event);
    /**
     * <B>方法名称：</B>add<BR>
     * <B>概要说明：</B>添加多个元素<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     * @param event
     */
    void add(E... event);

    /**
     * <B>方法名称：</B>tryAdd<BR>
     * <B>概要说明：</B>尝试添加一个元素, 如果添加成功返回true 失败返回false<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     * @param event
     * @return
     */
    boolean tryAdd(E event);

    /**
     * <B>方法名称：</B>tryAdd<BR>
     * <B>概要说明：</B>尝试添加多个元素, 如果添加成功返回true 失败返回false<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     * @param event
     * @return
     */
    boolean tryAdd(E... event);

    /**
     * <B>方法名称：</B>isShutdown<BR>
     * <B>概要说明：</B>isShutdown<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     * @return
     */
    boolean isShutdown();

    /**
     * <B>方法名称：</B>start<BR>
     * <B>概要说明：</B>start<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     */
    void start();

    /**
     * <B>方法名称：</B>shutdown<BR>
     * <B>概要说明：</B>shutdown<BR>
     * @author: chengqs
     * @create: 2025-03-12 15:08:04
     */
    void shutdown();
}
